package com.song.service.impl;


import com.song.bean.Menu;
import com.song.bean.Users;
import com.song.dao.impl.UsersDaoImpl;
import com.song.service.UsersService;

import java.util.ArrayList;
import java.util.List;

public class UsersServiceImpl implements UsersService {
    private UsersDaoImpl usersDao = new UsersDaoImpl();

    /**
     * 用户登录
     * 将用户的菜单分级
     * @param userName 用户名
     * @param passWord 密码
     * @return 用户信息集合
     */
    @Override
    public Users getUser(String userName, String passWord) {
        Users user = usersDao.getUser(userName, passWord);
        List<Menu> menuList = user.getRole().getMenu();
        //将菜单的一级目录与二级目录区分
        System.out.println("----======"+menuList.size());
        //存放一级目录的集合
        List<Menu> firstMenus = new ArrayList<>();
        for (Menu menu : menuList) {
            //当该菜单的父菜单ID为0时，表示其为顶级菜单
            if (menu.getFatherMenuId() == 0) {
                //存放二级目录的集合
                List<Menu> secondMenus = new ArrayList<>();
                //当菜单的父菜单ID与该顶级菜单ID值相等时，这个菜单就时其子菜单
                for (Menu menu1 : menuList) {
                    if (menu1.getFatherMenuId() == menu.getMenuId()) {
                        //将二级目录放入二级集合中
                        secondMenus.add(menu1);
                    }
                }
                //设置建立一级与二级目录的关系
                menu.setSecondMenu(secondMenus);
                //将一级目录存到集合
                firstMenus.add(menu);
            }
        }
        user.getRole().setMenu(firstMenus);
        return user;
    }

    /**
     * 查询用户信息（分页查询）
     *
     * @return 用户信息集合
     */
    @Override
    public List<Users> getUser(Integer index, Integer pagesize) {
        return usersDao.getUser(index, pagesize);
    }

    @Override
    public Integer getTotalUser() {
        return usersDao.getTotalUser();
    }

    /**
     * 新增用户
     *
     * @param user
     * @return
     */
    @Override
    public Boolean insertUser(Users user) {
        return usersDao.insertUser(user);
    }

    /**
     * 通过用户ID找到用户信息
     *
     * @param id 用户的ID
     * @return
     */
    @Override
    public Users findById(Integer id) {
        return usersDao.findById(id);
    }

    /**
     * 修改用户信息
     *
     * @param user 被修改的用户
     * @return
     */
    @Override
    public Boolean updateUser(Users user) {
        return usersDao.updateUser(user);
    }
    /**
     * 删除用户
     * @param id
     * @return
     */
    @Override
    public Boolean deleteUser(Integer id) {
        return usersDao.deleteUser(id);
    }


}
